home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / paperconfig < prev    next >
Text File  |  2008-06-19  |  4KB  |  228 lines

  1. #! /bin/bash
  2.  
  3. # paperconfig: configuration of system paper name
  4. #
  5. # Copyright (C) 1996, Yves Arrouye <arrouye@debian.org>
  6. #               2001, Adrian Bunk  <bunk@fs.tum.de>
  7.  
  8. usage() {
  9.     if [ "$1" = -h ]
  10.     then
  11.     exec 1>&2
  12.     echo -n U
  13.     else
  14.     echo -n u
  15.     fi
  16.  
  17.     echo "sage: `basename $0` [ -v, --version ] [ -h, --help ] [ -p, --paper name | --force ]"
  18.  
  19.     if [ "$1" = -h ]
  20.     then
  21.     cat <<EOF
  22.  
  23. Options: -v, --verbose          print version information and exit
  24.          -h, --help             print this help and exit
  25.      -p, --paper name    specify the paper to use
  26.          --force                force paper configuration
  27. EOF
  28.     exit 0
  29.     else
  30.     exit 1
  31.     fi
  32. }
  33.  
  34. # "|| true" added below, to assure that the script does not fail even if
  35. # called with bash -e. (MP 22/08/98)
  36.  
  37. unset PAPERSIZE || true 
  38. : ${PAPERCONF:=/etc/papersize}
  39. export PAPERCONF
  40.  
  41. unset PAPERDIR || true 
  42. : ${PAPERDIR:=/etc/libpaper.d}
  43. export PAPERDIR
  44.  
  45. force=0
  46.  
  47. if [ "$#" == 0 ]
  48.   then
  49.     usage
  50. fi
  51.  
  52. while [ $# -ne 0 ]
  53. do
  54.     case "$1" in
  55.     -v|--version)
  56.         echo "`basename $0` version 1.0" \
  57.         "by Yves Arrouye <arrouye@debian.org>"
  58.         exit 0
  59.         ;;
  60.     -h|--help)
  61.         usage -h
  62.         ;;
  63.     -p|--paper)
  64.         test $# -gt 1 || usage
  65.         paper="$2"
  66.         shift
  67.         ;;
  68.     --force)
  69.         force=1
  70.         ;;
  71.     *)
  72.         usage
  73.         ;;
  74.     esac
  75.     shift
  76. done
  77.  
  78. invalidpaper() {
  79.     ! paperconf "$1" 2>/dev/null 1>&2
  80. }
  81.  
  82. format() {
  83.     _maxwidth=$1; shift
  84.     _start="$1"; shift
  85.  
  86.     _cline=
  87.  
  88.     for w
  89.     do
  90.     if [ `echo "$_start$_cline$w " | wc -c` -ge 0$_maxwidth ]
  91.     then
  92.         echo "$_cline"
  93.         _cline=
  94.         _start=
  95.     fi
  96.     _cline="$_cline$w "
  97.     done
  98.  
  99.     if [ -n "$_cline" ]
  100.     then
  101.     echo "$_cline"
  102.     fi
  103.  
  104.     unset _maxwidth _cline _start
  105. }
  106.  
  107. # "chmod 644" added below, to assure that the conf file is created
  108. # with the right access permissions (MP 13/05/2000)
  109.  
  110. setpaper() {
  111.     paperright=`paperconf "$1" 2>/dev/null`
  112.  
  113.     ok=0
  114.  
  115.     if 2>/dev/null echo "$paperright" >${PAPERCONF}.new
  116.     then
  117.         if 2>/dev/null mv -f ${PAPERCONF}.new $PAPERCONF
  118.     then
  119.         if 2>/dev/null chmod 644 $PAPERCONF
  120.         then
  121.         ok=1
  122.             fi
  123.         fi
  124.     fi
  125.  
  126.     if [ $ok -eq 0 ]
  127.     then
  128.         echo `basename $0`: cannot create $PAPERCONF
  129.         exit 2
  130.     else
  131.     #
  132.     # Added code for calling back applications when
  133.     # papersize changes. See bug #345466
  134.     # eppesuig@debian.org, 2006-01-05
  135.     if [ -d ${PAPERDIR} ]
  136.     then
  137.         run-parts ${PAPERDIR}
  138.     fi
  139.     fi
  140. }
  141.  
  142. if [ ! -z "$paper" ]
  143. then
  144.     if invalidpaper $paper
  145.     then
  146.     >&2 echo `basename $0`: \"$paper\" is not a known paper name
  147.     exit 3
  148.     fi
  149.     setpaper "$paper"
  150.     exit 0
  151. fi
  152.  
  153. knownpapers="`paperconf -a`"
  154.  
  155. prompt=
  156. width=72
  157.  
  158. # "|| true" added below, to assure that the script does not fail even if 
  159. # called with bash -e. (MP 22/08/98)
  160.  
  161. paper=`paperconf 2>/dev/null || true`
  162. dftpaper=`paperconf -d`
  163.  
  164. if [ $force -eq 1 ] || [ ! -e $PAPERCONF ] || invalidpaper $paper
  165. then
  166.     papers="`format $width \"\" $knownpapers`"
  167.     echo
  168.  
  169.     if [ -x /usr/bin/pager ]
  170.     then
  171.     : ${PAGER:=/usr/bin/pager}
  172.     fi
  173.     if [ -x /bin/more ]
  174.     then
  175.     : ${PAGER:=/bin/more}
  176.     fi
  177.     : ${PAGER:=cat}
  178.  
  179.     LESS="-X -E $LESS"
  180.     export LESS
  181.  
  182.     (
  183.     cat <<EOF
  184. The default (also known as system) paper can be chosen from many known
  185. papers that are currently recognized by programs using the libpaper
  186. library (with libpaper, paper names are case insensitive; if you use
  187. programs that use the system paper size but do not rely on the libpaper
  188. library, this may not be true and some of the papers listed below may
  189. not be known by these programs):
  190.  
  191. EOF
  192.     echo "$papers" | sed 's/^/    /'
  193.     echo
  194.     ) | ${PAGER}
  195.  
  196.     : ${paper:=$dftpaper}
  197.  
  198.     echo -n "Default paper name? [$paper] "
  199.     read ans
  200.     : ${ans:=$paper}
  201.     paper=$ans
  202. fi
  203.  
  204. while invalidpaper "$paper"
  205. do
  206.     if [ -z "$paper" ]
  207.     then
  208.     echo "Please choose a paper from the available papers list."
  209.     else
  210.     echo "Unknow paper \"$paper\"," \
  211.         "please choose one from the available papers list."
  212.     fi
  213.  
  214.     paper=$dftpaper
  215.  
  216.     echo -n "Default paper name? [$paper] "
  217.     read ans
  218.     paper=$ans
  219. done
  220.  
  221. if [ "`paperconf 2>/dev/null`" != "$paper" ] || grep -q "[#     ]" $PAPERCONF
  222. then
  223.     setpaper "$paper"
  224. fi
  225.  
  226. exit 0
  227.  
  228.